{"version":3,"file":"static/chunks/pages/page/[...slug]-f040b6ee8d53aebe.js","mappings":"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","sources":["webpack://_N_E/?dd88","webpack://_N_E/./src/components/ChangePasswordForm/index.tsx","webpack://_N_E/./src/components/InMemory/index.tsx","webpack://_N_E/./src/components/EditableInMemoryForm/index.tsx","webpack://_N_E/./src/components/FeedItemShared/index.tsx","webpack://_N_E/./src/components/FundraisingPageActivityBlock/index.tsx","webpack://_N_E/./src/components/FundraisingPageAdmin/index.tsx","webpack://_N_E/./src/components/RestrictionSection/styles.ts","webpack://_N_E/./src/components/RestrictionSection/index.tsx","webpack://_N_E/./src/components/ActivityManagementJourney/styles.ts","webpack://_N_E/./src/components/ActivityManagementJourney/index.tsx","webpack://_N_E/./src/components/StravaSection/index.tsx","webpack://_N_E/./src/components/FitbitSection/index.tsx","webpack://_N_E/./src/components/FundraisingPageTotaliser/index.tsx","webpack://_N_E/./src/components/CollapseCentered/styles.ts","webpack://_N_E/./src/components/CollapseCentered/index.tsx","webpack://_N_E/./src/components/TotaliserImpactCarousel/styles.ts","webpack://_N_E/./src/components/TotaliserImpactCarousel/index.tsx","webpack://_N_E/./src/components/FundraisingPageLatestUpdates/index.tsx","webpack://_N_E/./src/components/FundraisingPageClosedInfo/index.tsx","webpack://_N_E/./src/components/EditableDisplayNameForm/styles.ts","webpack://_N_E/./src/components/EditableDisplayNameForm/index.tsx","webpack://_N_E/./src/components/FundraisingPageVideo/styles.ts","webpack://_N_E/./src/components/FundraisingPageVideo/index.tsx","webpack://_N_E/./src/components/QrModal/index.tsx","webpack://_N_E/./src/components/FundraisingPage/styles.ts","webpack://_N_E/./src/components/FundraisingPage/index.tsx","webpack://_N_E/./src/pages/page/[...slug].tsx","webpack://_N_E/./src/utils/timeUtils.ts"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/page/[...slug]\",\n function () {\n return require(\"private-next-pages/page/[...slug].tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/page/[...slug]\"])\n });\n }\n ","import { type ChangeEvent, useState } from \"react\";\nimport { Box, Checkbox, Link, TextField } from \"@cruk/cruk-react-components\";\n\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\nimport { useFundraiserContext } from \"@fwa/src/contexts/FundraiserContext\";\nimport {\n buildForgottenPasswordURL,\n resetPassword,\n} from \"@fwa/src/services/auth\";\n\nimport { FormActions } from \"@fwa/src/components/FormActions\";\nimport { FormFieldWrapper } from \"@fwa/src/components/styles\";\n\nimport { type OauthUserType } from \"@fwa/src/types\";\n\ntype Props = {\n onSuccess: () => void;\n onCancel?: () => void;\n cancelButtonText?: string;\n submitButtonText?: string;\n};\n\nexport const ChangePasswordForm = ({\n onSuccess,\n onCancel,\n cancelButtonText,\n submitButtonText,\n}: Props) => {\n const { trackError } = useTracking();\n const [fundraiserState, setFundraiserState] = useFundraiserContext();\n const { fundraiser, tempPassword } = fundraiserState;\n const [isLoading, setIsLoading] = useState(false);\n const [showPassword, setShowPassword] = useState(false);\n const [passwordsMatch, setPasswordsMatch] = useState(true);\n const [currentPasswordCorrect, setCurrentPasswordCorrect] =\n useState(true);\n const [oldPassword, setOldPassword] = useState(\"\");\n const [newPassword1, setNewPassword1] = useState(\"\");\n const [newPassword2, setNewPassword2] = useState(\"\");\n const [submissionErrorMessage, setSubmissionErrorMessage] =\n useState(\"\");\n // we don't want people to disconnect from facebook unless they have set a password in oauth\n const hasSetPassword = (fundraiser?.oauthUser?.passwordStrength || 0) > 0;\n const firstTimePassword = !hasSetPassword || tempPassword;\n\n const clearErrors = () => {\n setPasswordsMatch(true);\n setCurrentPasswordCorrect(true);\n setSubmissionErrorMessage(\"\");\n };\n\n const reset = () => {\n clearErrors();\n setOldPassword(\"\");\n setNewPassword1(\"\");\n setNewPassword2(\"\");\n };\n\n const handleSubmitOfChangePassword = () => {\n clearErrors();\n setIsLoading(true);\n\n if (!newPassword1.length || !newPassword2.length) {\n setPasswordsMatch(false);\n setSubmissionErrorMessage(\"Please enter both passwords\");\n setIsLoading(false);\n return;\n }\n\n if (newPassword1.length < 8) {\n setSubmissionErrorMessage(\"Password must be 8 characters or longer\");\n setPasswordsMatch(false);\n setIsLoading(false);\n return;\n }\n\n if (newPassword1 !== newPassword2) {\n setPasswordsMatch(false);\n setSubmissionErrorMessage(\"Passwords must match\");\n setIsLoading(false);\n return;\n }\n\n if (!firstTimePassword && !oldPassword.length) {\n setPasswordsMatch(false);\n setSubmissionErrorMessage(\"Please enter current password\");\n setIsLoading(false);\n return;\n }\n\n if (!firstTimePassword) {\n resetPassword(oldPassword, newPassword1)\n .then((res: Response) => {\n if (!res.ok) {\n if (res.status === 401) {\n setCurrentPasswordCorrect(false);\n setSubmissionErrorMessage(\"Current password incorrect\");\n } else {\n setSubmissionErrorMessage(\n \"Please check your existing password and ensure your new password is sufficiently complex\",\n );\n }\n throw new Error(\"Unable to change password\");\n }\n return undefined;\n })\n .then(() => {\n reset();\n setIsLoading(false);\n if (onSuccess) {\n onSuccess();\n }\n return undefined;\n })\n .catch((err) => {\n trackError(err as Error, { component: \"AuthenticationForm\" });\n setIsLoading(false);\n });\n } else {\n resetPassword(tempPassword, newPassword1)\n .then((res: Response) => {\n if (!res.ok) {\n setSubmissionErrorMessage(\n \"Please check your new password and ensure your new password is sufficiently complex\",\n );\n throw new Error(\"Unable to set password\");\n }\n return res.json();\n })\n .then((oauthUser: OauthUserType) => {\n if (fundraiserState.fundraiser) {\n setFundraiserState({\n ...fundraiserState,\n fundraiser: {\n ...fundraiserState.fundraiser,\n oauthUser,\n },\n tempPassword: null,\n });\n }\n reset();\n setIsLoading(false);\n if (onSuccess) {\n onSuccess();\n }\n return undefined;\n })\n .catch((err) => {\n trackError(err as Error, { component: \"AuthenticationForm\" });\n setIsLoading(false);\n });\n }\n };\n\n const handleShowPasswordChange = () => {\n setShowPassword(!showPassword);\n };\n\n return (\n
\n \n
\n \n {firstTimePassword ? null : (\n \n Forgotten your password?\n \n }\n onChange={(changeEvent: ChangeEvent) => {\n setOldPassword(changeEvent.target.value);\n }}\n value={oldPassword}\n errorMessage={\n !currentPasswordCorrect ? submissionErrorMessage : \"\"\n }\n hasError={\n !currentPasswordCorrect && !!submissionErrorMessage.length\n }\n minLength={8}\n />\n )}\n ) => {\n setNewPassword1(changeEvent.target.value);\n }}\n value={newPassword1}\n hasError={!passwordsMatch}\n minLength={8}\n />\n ) => {\n setNewPassword2(changeEvent.target.value);\n }}\n errorMessage={\n currentPasswordCorrect ? submissionErrorMessage : \"\"\n }\n hasError={\n currentPasswordCorrect && !!submissionErrorMessage.length\n }\n minLength={8}\n />\n \n \n
\n
\n \n
\n );\n};\n\nexport default ChangePasswordForm;\n","import { parseISO, addHours } from \"date-fns\";\n\nimport { Text } from \"@cruk/cruk-react-components\";\nimport { isValidDate } from \"@fwa/src/utils/timeUtils\";\nimport { formatInTimeZone } from \"date-fns-tz\";\n\ntype Props = {\n name: string;\n birthDateString?: string | null;\n deathDateString?: string | null;\n};\n\nexport const InMemory = ({\n name,\n birthDateString = null,\n deathDateString = null,\n}: Props) => {\n const getLifeDatesString = (): string | null => {\n const birthDate = birthDateString\n ? addHours(parseISO(birthDateString), 12)\n : null;\n const deathDate = deathDateString\n ? addHours(parseISO(deathDateString), 12)\n : null;\n const birthValid = birthDate && isValidDate(birthDate);\n const deathValid = deathDate && isValidDate(deathDate);\n\n if (!birthDate || !deathDate || !birthValid || !deathValid) return null;\n return `${formatInTimeZone(\n birthDate,\n \"Europe/London\",\n \"do LLL yyyy\",\n )} - ${formatInTimeZone(deathDate, \"Europe/London\", \"do LLL yyyy\")}`;\n };\n\n return (\n <>\n In memory of\n {name}\n {getLifeDatesString() ? {getLifeDatesString()} : null}\n \n );\n};\n\nexport default InMemory;\n","import { useState, type ChangeEvent } from \"react\";\nimport {\n Text,\n Checkbox,\n Box,\n DateField,\n TextField,\n ErrorText,\n} from \"@cruk/cruk-react-components\";\nimport { parseISO, addHours, isValid } from \"date-fns\";\n\nimport { isValidDate } from \"@fwa/src/utils/timeUtils\";\nimport { prefixSingleWithZero } from \"@fwa/src/utils/formatUtils\";\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\n\nimport { InMemory } from \"@fwa/src/components/InMemory\";\nimport { OnlyYou } from \"@fwa/src/components/OnlyYou\";\n\nimport { DashedBorder, ResponsiveRow } from \"@fwa/src/components/styles\";\nimport {\n ACTIVITY_IN_MEMORY_MAX_LENGTH,\n fundraisingPageActivityInMemoryValidation,\n type InMemoryFormValues,\n} from \"@fwa/src/validation/page\";\n\nimport {\n type FundraisingPageType,\n type InMemoryDateType,\n type PageType,\n} from \"@fwa/src/types\";\nimport Editable from \"@fwa/src/components/Editable\";\nimport { calcLength } from \"@fwa/src/utils/formUtils\";\nimport styled from \"styled-components\";\nimport { useForm } from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\n\ntype Props = {\n page: FundraisingPageType;\n name?: string;\n handleEditData: (\n data: Partial,\n refresh?: boolean,\n ) => Promise;\n canEdit: boolean;\n};\n\nconst placeHolder = (\n \n \n \n Are you raising money in memory of someone?\n \n \n);\n\nconst DateFieldWrapper = styled(Box)`\n min-width: 16rem;\n`;\n\nconst midDayDateFromISODateString = (isoDateString: string): Date =>\n addHours(parseISO(isoDateString), 12);\n\nconst getDatesFromState = (newState: InMemoryDateType) => {\n const birthDatePartial = `${newState.birthYear || \"\"}${\n newState.birthMonth || \"\"\n }${newState.birthDay || \"\"}`;\n const deathDatePartial = `${newState.deathYear || \"\"}${\n newState.deathMonth || \"\"\n }${newState.deathDay || \"\"}`;\n const birthDate = parseISO(\n `${newState.birthYear || \"\"}-${prefixSingleWithZero(\n newState.birthMonth || \"\",\n )}-${prefixSingleWithZero(newState.birthDay || \"\")}`,\n );\n birthDate.setHours(12);\n const deathDate = parseISO(\n `${newState.deathYear || \"\"}-${prefixSingleWithZero(\n newState.deathMonth || \"\",\n )}-${prefixSingleWithZero(newState.deathDay || \"\")}`,\n );\n deathDate.setHours(12);\n const birthValid = isValidDate(birthDate);\n const deathValid = isValidDate(deathDate);\n return {\n birthDate,\n deathDate,\n birthValid,\n deathValid,\n birthDatePartial,\n deathDatePartial,\n };\n};\n\n// We need to submit dates as yyyy-mm-dd\n// so we need to take the days the months and the years figure out if they make valid dates\n// and then convert them to the ISO string format\nconst inMemoryStateDateToIsoDates = (newState: InMemoryDateType) => {\n const { birthDate, deathDate, birthValid, deathValid } =\n getDatesFromState(newState);\n return {\n birthISOString:\n birthDate && birthValid ? birthDate.toISOString().split(\"T\")[0] : null,\n deathISOString:\n deathDate && deathValid ? deathDate.toISOString().split(\"T\")[0] : null,\n };\n};\n\nexport const EditableInMemoryForm = ({\n page,\n handleEditData,\n canEdit,\n}: Props) => {\n const { trackError } = useTracking();\n\n const { dateOfBirthDeceased, dateOfDeathDeceased, activityInMemory } = page;\n const [showDate, setShowDate] = useState(\n !!dateOfBirthDeceased || !!dateOfDeathDeceased || false,\n );\n const [isLoading, setIsLoading] = useState(false);\n\n const [nameCharCount, setNameCharCount] = useState(\n calcLength(activityInMemory || \"\"),\n );\n\n const [dateState, setDateState] = useState({\n birthDay: dateOfBirthDeceased\n ? midDayDateFromISODateString(dateOfBirthDeceased).getDate().toString()\n : null,\n birthMonth: dateOfBirthDeceased\n ? (\n midDayDateFromISODateString(dateOfBirthDeceased).getMonth() + 1\n ).toString()\n : null,\n birthYear: dateOfBirthDeceased\n ? midDayDateFromISODateString(dateOfBirthDeceased)\n .getFullYear()\n .toString()\n : null,\n deathDay: dateOfDeathDeceased\n ? midDayDateFromISODateString(dateOfDeathDeceased).getDate().toString()\n : null,\n deathMonth: dateOfDeathDeceased\n ? (\n midDayDateFromISODateString(dateOfDeathDeceased).getMonth() + 1\n ).toString()\n : null,\n deathYear: dateOfDeathDeceased\n ? midDayDateFromISODateString(dateOfDeathDeceased)\n .getFullYear()\n .toString()\n : null,\n });\n\n const defaultValues = {\n activityInMemory: page.activityInMemory || \"\",\n dateOfBirthDeceased: isValid(parseISO(dateOfBirthDeceased || \"\"))\n ? parseISO(dateOfBirthDeceased || \"\")\n : undefined,\n dateOfDeathDeceased: isValid(parseISO(dateOfDeathDeceased || \"\"))\n ? parseISO(dateOfDeathDeceased || \"\")\n : undefined,\n };\n\n const formProps = useForm({\n mode: \"onBlur\",\n reValidateMode: \"onBlur\",\n defaultValues,\n criteriaMode: \"firstError\",\n shouldFocusError: true,\n resolver: zodResolver(fundraisingPageActivityInMemoryValidation),\n resetOptions: {\n keepDirtyValues: true, // user-interacted input will be retained\n keepErrors: false, // input errors will be retained with value update\n },\n });\n\n const {\n clearErrors,\n register,\n trigger,\n setValue,\n setError,\n formState: { errors },\n getValues,\n } = formProps;\n\n const doSubmit = async (): Promise => {\n clearErrors();\n if (showDate) {\n const isFormValid = await trigger();\n if (!isFormValid) {\n setIsLoading(false);\n return;\n }\n } else {\n const isNameValid = await trigger(\"activityInMemory\");\n if (!isNameValid) {\n setIsLoading(false);\n return;\n }\n }\n // once validation passes\n setIsLoading(true);\n const { birthISOString, deathISOString } =\n inMemoryStateDateToIsoDates(dateState);\n // convert dates to ISOString for FWS\n const dateOfBirthDeceased = showDate ? birthISOString : null;\n const dateOfDeathDeceased = showDate ? deathISOString : null;\n\n return handleEditData({\n activityInMemory: getValues(\"activityInMemory\"),\n dateOfBirthDeceased,\n dateOfDeathDeceased,\n })\n .then((pageData) => {\n setIsLoading(false);\n return pageData;\n })\n .catch((error) => {\n setError(\"root\", { type: \"submit\", message: \"Unable to submit\" });\n trackError(error as Error, { component: \"EditableInMemoryForm\" });\n throw error;\n });\n };\n\n // hides/shows the dates\n const handleShowDatesChange = (e: ChangeEvent) => {\n setShowDate(e.target.checked);\n };\n\n // we don't want to show the error message\n // when people are still hopping from date to month to year\n const handleBirthDateFocus = () => {\n clearErrors(\"dateOfBirthDeceased\");\n };\n const handleDeathDateFocus = () => {\n clearErrors(\"dateOfDeathDeceased\");\n };\n const handleNameBlur = () => {\n trigger(\"activityInMemory\", { shouldFocus: true }).catch(() => {\n // no op don't let revalidation err break form\n });\n };\n const handleBirthDateBlur = () => {\n if (\n dateState.birthDay?.length &&\n dateState.birthMonth?.length &&\n dateState.birthYear?.length\n ) {\n trigger(\"dateOfBirthDeceased\").catch(() => {\n // no op don't let revalidation err break form\n });\n }\n };\n const handleDeathDateBlur = () => {\n if (\n dateState.deathDay?.length &&\n dateState.deathMonth?.length &&\n dateState.deathYear?.length\n ) {\n trigger(\"dateOfDeathDeceased\").catch(() => {\n // no op don't let revalidation err break form\n });\n }\n };\n\n // updates date state when there is a change in any date component\n\n const handleDateChanged = (e: ChangeEvent) => {\n const input = e.target;\n const newState = { ...dateState, [`${input.name}`]: input.value };\n\n // Controlled val of DateField\n setDateState(newState);\n\n // these are used for form validation\n setValue(\n \"dateOfBirthDeceasedPartial\",\n `${newState.birthDay || \"\"}${newState.birthMonth || \"\"}${\n newState.birthYear || \"\"\n }`,\n );\n setValue(\n \"dateOfDeathDeceasedPartial\",\n `${newState.deathDay || \"\"}${newState.deathMonth || \"\"}${\n newState.deathYear || \"\"\n }`,\n );\n\n const { birthDate, birthValid, deathDate, deathValid } =\n getDatesFromState(newState);\n setValue(\"dateOfBirthDeceased\", birthValid ? birthDate : undefined);\n setValue(\"dateOfDeathDeceased\", deathValid ? deathDate : undefined);\n };\n\n const handleNameChange = (e: ChangeEvent) => {\n setNameCharCount(calcLength(e.target.value));\n setValue(\"activityInMemory\", e.target.value);\n };\n\n return canEdit ? (\n
\n \n In memory of\n <>\n \n {`${\n ACTIVITY_IN_MEMORY_MAX_LENGTH - nameCharCount\n } characters remaining`}\n \n \n \n Add memorial dates\n \n \n {showDate && (\n \n \n \n \n \n\n \n \n \n \n \n )}\n {errors?.root?.message ? (\n {errors?.root?.message}\n ) : null}\n \n }\n viewNode={\n !activityInMemory?.length && placeHolder ? (\n <>{placeHolder}\n ) : (\n \n )\n }\n handleSubmit={doSubmit}\n isLoading={isLoading}\n tooltip=\"Edit in memory details\"\n />\n
\n ) : page.activityInMemory ? (\n \n \n \n ) : null;\n};\n\nexport default EditableInMemoryForm;\n","import { useEffect, useState } from \"react\";\nimport { ErrorText, Modal, Box } from \"@cruk/cruk-react-components\";\nimport { useRouter } from \"next/compat/router\";\nimport { useSwrGet } from \"@fwa/src/hooks/useSwrGet\";\n\nimport { queryAsString } from \"@fwa/src/utils/urlUtils\";\nimport { fwsUrlFeedItem } from \"@fwa/src/services/feedItemService\";\n\nimport { FeedItem } from \"@fwa/src/components/FeedItem\";\n\nimport { type FeedItemType } from \"@fwa/src/types\";\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\n\ntype Props = {\n feedId: string;\n pageId: string;\n pageUrl: string;\n isStravaMetric: boolean;\n fitbitDailyTargetSteps: number;\n sharedFeedItemData?: FeedItemType;\n};\n\nexport const FeedItemShared = ({\n feedId,\n pageId,\n pageUrl,\n isStravaMetric,\n fitbitDailyTargetSteps,\n sharedFeedItemData,\n}: Props) => {\n const { trackError } = useTracking();\n const [showModal, setShowModal] = useState(false);\n const router = useRouter();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { feed, slug, ...restOfQuery } = router?.query || {};\n const feedString = queryAsString(feed);\n\n const url =\n feedString.length || feedId\n ? `${fwsUrlFeedItem({ feedItemId: feedString || feedId })}`\n : null;\n\n // page cache\n const opts = { fallbackData: sharedFeedItemData };\n const { data, error, mutate } = useSwrGet(url, opts);\n\n const handleClose = () => {\n router\n ?.push({\n pathname: router.asPath.split(\"?\")[0],\n query: { ...restOfQuery },\n })\n .catch((err) => {\n trackError(err as Error, { component: \"FeedItemShared\" });\n });\n };\n\n useEffect(() => {\n setShowModal(!!data);\n }, [data]);\n\n const mutateOnEdit = (updatedItem: FeedItemType) => {\n mutate(updatedItem).catch((err) => {\n trackError(err as Error, { component: \"FeedItemShated\" });\n });\n };\n\n if (showModal) {\n return (\n \n \n {!error && data && (\n {\n // placeholder no op\n }}\n handleEdit={mutateOnEdit}\n />\n )}\n {error ? Unable to find feed item : null}\n \n \n );\n }\n return null;\n};\n\nexport default FeedItemShared;\n","import dynamic from \"next/dynamic\";\nimport styled from \"styled-components\";\nimport { formatInTimeZone } from \"date-fns-tz\";\nimport { faBullhorn } from \"@fortawesome/free-solid-svg-icons\";\nimport { faCalendarDays } from \"@fortawesome/free-regular-svg-icons\";\nimport { Box, IconFa, Text, type ThemeType } from \"@cruk/cruk-react-components\";\n\nimport { useSwrGet } from \"@fwa/src/hooks/useSwrGet\";\nimport { fwsUrlPageParentMemberships } from \"@fwa/src/services/fundraisingPageService\";\n\nimport { PageMemberOf } from \"@fwa/src/components/PageMemberOf\";\n\nimport {\n ActivityIconWrapper,\n ActivityItem,\n ActivityItemWrapper,\n} from \"@fwa/src/components/styles\";\n\nimport {\n type FundraisingPageType,\n type FwsResponseData,\n type TeamMemberType,\n} from \"@fwa/src/types\";\n\nconst FundraisingPageActivityDateForm = dynamic(\n () => import(\"@fwa/src/components/FundraisingPageActivityDateForm\"),\n);\nconst FundraisingPageActivityNameForm = dynamic(\n () => import(\"@fwa/src/components/FundraisingPageActivityNameForm\"),\n);\n\nconst ActivityItems = styled.div<{ theme: ThemeType }>`\n display: flex;\n flex-direction: column;\n @media (min-width: ${({ theme }) => theme.breakpoint.desktop}) {\n flex-direction: row;\n justify-content: center;\n }\n`;\n\nconst TextResponsive = styled(Text)<{ theme: ThemeType }>`\n text-align: left;\n @media (min-width: ${({ theme }) => theme.breakpoint.desktop}) {\n text-align: center;\n }\n`;\n\ntype Props = {\n page: FundraisingPageType;\n canEdit: boolean;\n updateAndMutatePage: (\n data: Partial,\n refresh?: boolean,\n ) => Promise;\n};\n\nexport const FundraisingPageActivityBlock = ({\n page,\n canEdit,\n updateAndMutatePage,\n}: Props) => {\n const url = page\n ? `${fwsUrlPageParentMemberships({\n pageId: page.uniqueId,\n currentPage: 1,\n itemsPerPage: 3,\n })}`\n : null;\n const { data } = useSwrGet>(url);\n const memberships = data?.results || [];\n\n // Example activityDate: \"2020-12-20T11:51:28+00:00\" looks like toISOString()\n const activityDateTimeString =\n !!page && page.activityDateTime\n ? formatInTimeZone(\n new Date(page.activityDateTime),\n \"Europe/London\",\n \"EEE d LLL y\",\n )\n : \"\";\n\n const activityDateTimeEndString =\n page?.activityDateTimeEnd &&\n page?.activityDateTimeEnd !== page?.activityDateTime\n ? ` - ${formatInTimeZone(\n new Date(page.activityDateTimeEnd),\n \"Europe/London\",\n \"EEE d LLL y\",\n )}`\n : \"\";\n\n const fullDateRangeString = `${activityDateTimeString}${activityDateTimeEndString}`;\n const activityString = page?.activityName || page?.event?.eventName || \"\";\n\n if (canEdit) {\n return (\n \n \n \n \n \n \n \n \n {data ? (\n \n ) : null}\n \n \n );\n }\n\n if (activityString.length || page.activityDateTime || !!memberships.length) {\n return (\n \n \n {activityString.length ? (\n \n \n \n \n \n {activityString}\n \n \n ) : null}\n {page.activityDateTime ? (\n \n \n \n \n \n {fullDateRangeString}\n \n \n ) : null}\n\n {data ? (\n \n ) : null}\n \n \n );\n }\n\n return null;\n};\n\nexport default FundraisingPageActivityBlock;\n","import dynamic from \"next/dynamic\";\n\nimport { type FundraisingPageType } from \"@fwa/src/types\";\n\nconst FundraisingPageConnections = dynamic(\n () => import(\"@fwa/src/components/FundraisingPageConnections\"),\n);\nconst FundraisingPageProgress = dynamic(\n () => import(\"@fwa/src/components/FundraisingPageProgress\"),\n);\n\ntype Props = {\n page: FundraisingPageType;\n mutatePage: (\n data: Partial,\n ) => Promise;\n};\n\nexport const FundraisingPageAdmin = ({ page, mutatePage }: Props) => {\n const shouldShowPageConnections =\n page?.fitbitAllowed ||\n page?.facebookFundraiserAllowed ||\n page?.stravaAllowed ||\n false;\n\n return (\n <>\n {/* Personalise your giving page section */}\n \n {/* Page connections section */}\n {shouldShowPageConnections && (\n \n )}\n \n );\n};\n\nexport default FundraisingPageAdmin;\n","import styled from \"styled-components\";\nimport { Avatar, type ThemeType } from \"@cruk/cruk-react-components\";\n\nexport const ImageWrapper = styled.div`\n text-align: right;\n margin-top: -20px;\n`;\n\nexport const TextWrapper = styled.div<{ theme: ThemeType }>`\n padding: ${({ theme }) => theme.spacing.s} ${({ theme }) => theme.spacing.s} 0\n ${({ theme }) => theme.spacing.s};\n`;\n\nexport const RestrictionImage = styled.img`\n height: 120px;\n width: auto;\n vertical-align: bottom;\n text-align: right;\n`;\n\nexport const AvatarSpacing = styled(Avatar)<{ theme: ThemeType }>`\n margin-right: ${({ theme }) => theme.spacing.s};\n`;\n","import React from \"react\";\nimport { Text, Heading, Box } from \"@cruk/cruk-react-components\";\n\nimport { useBrandContext } from \"@fwa/src/contexts/BrandContext\";\nimport { imagePathFromImageType } from \"@fwa/src/services/imageService\";\n\nimport { Row, ColumnSpaceAround } from \"@fwa/src/components/styles\";\n\nimport { type RestrictionType } from \"@fwa/src/types\";\n\nimport {\n RestrictionImage,\n TextWrapper,\n ImageWrapper,\n AvatarSpacing,\n} from \"./styles\";\n\nconst restrictionFrameSu2c = \"/assets/images/img/arrows.jpg\";\n\nconst noneRestrictedImg = \"/assets/images/img/none-restricted-all-cancers.png\";\n\ntype Props = {\n restriction: RestrictionType | null;\n};\n\nexport const RestrictionSection = ({ restriction }: Props) => {\n const noneRestrictedPage: RestrictionType = {\n restrictionCode: \"undefined\",\n description:\n \"Our work has helped double cancer survival in the UK in the last 50 years. Despite this incredible progress, there’s more to be done. Nearly 1 in 2 of us will get cancer in our lifetime. Help us carry out world-class research into the prevention, detection and treatment of more than 200 types of cancer.\",\n hidden: false,\n title: \"All Cancer Types\",\n image: {\n uniqueId: \"\",\n url: noneRestrictedImg,\n width: 120,\n height: 120,\n },\n };\n const [brandName] = useBrandContext();\n const isSu2c = brandName === \"su2c\";\n const isBowelBabe = brandName === \"bowelbabe\";\n const restrictionObject = restriction ?? noneRestrictedPage;\n const restrictionImageUrl = restrictionObject.image\n ? imagePathFromImageType(restrictionObject.image)\n : \"\";\n const { title, description, image } = restrictionObject;\n\n if (!title || !description || !image) return null;\n\n // bowelbabe has no image at the bottom\n const restrictionImageSrc = isBowelBabe\n ? \"\"\n : isSu2c\n ? restrictionFrameSu2c\n : null;\n\n return (\n \n \n \n \n \n \n \n CAUSE\n \n \n {restrictionObject.title}\n \n \n \n \n {description}\n \n {restrictionImageSrc ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport default RestrictionSection;\n","import { type ThemeType } from \"@cruk/cruk-react-components\";\nimport styled from \"styled-components\";\n\nexport const PartyPopper = styled.img<{ theme: ThemeType }>`\n width: 90px;\n display: block;\n margin: 0 auto;\n margin-bottom: ${({ theme }) => theme.spacing.s};\n`;\n\nexport const MessageWrapper = styled.div<{ theme: ThemeType }>`\n margin-top: ${({ theme }) => theme.spacing.xl};\n`;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useRouter } from \"next/compat/router\";\nimport {\n Box,\n Button,\n Heading,\n Text,\n Collapse,\n Modal,\n} from \"@cruk/cruk-react-components\";\n\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\nimport { fetcher, FWS_BASE_URL } from \"@fwa/src/services/apiClient\";\nimport { useFundraiserContext } from \"@fwa/src/contexts/FundraiserContext\";\nimport { useModalContext } from \"@fwa/src/contexts/ModalContext\";\nimport { getTokenFromAuthCode, logIn, challenge } from \"@fwa/src/services/auth\";\nimport { getLoggedInFundraiser } from \"@fwa/src/services/fundraiserService\";\n\nimport { ChangePasswordForm } from \"@fwa/src/components/ChangePasswordForm\";\n\nimport { RowCenter } from \"@fwa/src/components/styles\";\nimport {\n PartyPopper,\n MessageWrapper,\n} from \"@fwa/src/components/ActivityManagementJourney/styles\";\n\nimport {\n type FinaliseRegistrationType,\n type FundraiserType,\n type FundraisingPageType,\n type OneTimeLoginType,\n} from \"@fwa/src/types\";\n\nconst OAUTH_CLIENT_ID = process.env.NEXT_PUBLIC_OAUTH_CLIENT_ID || \"\";\nconst OAUTH_BASE_URL = process.env.NEXT_PUBLIC_OAUTH_BASE_URL || \"\";\n\nconst modalPartyPopper = \"/assets/images/img/party-popper.svg\";\n\nexport const ActivityManagementJourney = ({\n page,\n}: {\n page: FundraisingPageType;\n}) => {\n const { trackError, trackEventGtm } = useTracking();\n const [, setModalState] = useModalContext();\n const [fundraiserState, setFundraiserState] = useFundraiserContext();\n const router = useRouter();\n const {\n message_header: messageHeader,\n message_body: messageBody,\n signature,\n ...query\n } = router?.query || {};\n const [finaliseRegistration, setFinaliseRegistration] = useState<\n FinaliseRegistrationType | undefined\n >();\n const [isRegistering, setIsRegistering] = useState(false);\n const [hasRegFailed, setHasRegFailed] = useState(false);\n const [isDismissing, setIsDismissing] = useState(false);\n\n // Before AM updates their backend infrastructure the message header and body are still base64 encoded and gzipped\n // for this reason until the update to using plain strings in the query string will will use some default text\n // message_signature is deprecated in the new API, if it exists we are seeing the legacy AM API.\n const isAMLegacy = typeof query.message_signature !== \"undefined\";\n const defaultHeader = `Congratulations! You're now signed up.`;\n const defaultBody = `Personalise your page to let everyone know why you're raising money and share it with your friends and family to encourage donations. Why not be the first to add a donation to your page? It could encourage others to do the same!`;\n const header = isAMLegacy ? defaultHeader : messageHeader || \"\";\n const body = isAMLegacy ? defaultBody : messageBody || \"\";\n\n const { loggedInStatus, fundraiser, tempPassword } = fundraiserState;\n const loggedInAsNonRegisteredUser =\n page?.fundraiser &&\n fundraiser &&\n fundraiser?.uniqueId !== page.fundraiser.uniqueId;\n const showLoginLink =\n loggedInStatus === \"loggedOut\" || loggedInAsNonRegisteredUser;\n\n const dismissModal = useCallback(() => {\n // flag to stop infinite loop when dismiss triggers infinite loop when we update the query string\n setIsDismissing(true);\n router\n ?.push({ query }, undefined, {\n shallow: true,\n })\n .then(() => setModalState(null))\n .catch((err) => {\n trackError(err as Error, { component: \"ActivityManagementJourney\" });\n });\n }, [router, query, setModalState, trackError]);\n\n // first complete registration and set registration data to state\n useEffect(() => {\n if (\n !signature ||\n isRegistering ||\n finaliseRegistration ||\n hasRegFailed ||\n !router\n )\n return;\n (async () => {\n setIsRegistering(true);\n\n // get registration details from signature\n const registration: FinaliseRegistrationType | void =\n await fetcher(\n `${FWS_BASE_URL}/fundraisingpages/${page.uniqueId}/finaliseactivityregistration`,\n {\n method: \"POST\",\n body: JSON.stringify({\n codeChallenge: challenge(),\n clientId: OAUTH_CLIENT_ID,\n signature,\n }),\n },\n ).catch((err) => {\n trackError(err as Error, {\n component: \"ActivityManagementJourney\",\n });\n setIsRegistering(false);\n setHasRegFailed(true);\n return;\n });\n if (!registration) {\n const err = new Error(\"Failed to register for activity\");\n setIsRegistering(false);\n trackError(err as Error, {\n component: \"ActivityManagementJourney\",\n });\n setIsRegistering(false);\n setHasRegFailed(true);\n return;\n }\n\n // do one time log in if on registration\n if (registration?.oneTimeLogin) {\n const oneTimeLogin: OneTimeLoginType | void =\n await fetcher(\n `${OAUTH_BASE_URL}${registration.oneTimeLogin.urlPath}?noninteractive=true`,\n {\n credentials: \"include\",\n },\n ).catch((err) => {\n trackError(err as Error, {\n component: \"ActivityManagementJourney\",\n });\n });\n\n if (oneTimeLogin) {\n await getTokenFromAuthCode(oneTimeLogin.authCode);\n const loggedInFundraiser: FundraiserType | void | null =\n await getLoggedInFundraiser()\n .then((res) => res)\n .catch((err) => {\n trackError(err as Error, {\n component: \"ActivityManagementJourney\",\n });\n });\n\n if (loggedInFundraiser) {\n setFundraiserState({\n fundraiser: loggedInFundraiser,\n loggedInStatus: \"loggedIn\",\n tempPassword: registration.oneTimeLogin?.password || null,\n });\n }\n }\n }\n // update query string to remove signature update state\n await router?.push(\n {\n pathname: router.pathname,\n query: { ...router.query, signature: undefined },\n },\n undefined,\n { shallow: true },\n );\n\n trackEventGtm({\n event: \"am_signup_confirmation\",\n activityName: page.activityName,\n });\n // state update riggers the use effect that sets the modal to show\n setFinaliseRegistration(registration);\n setIsRegistering(false);\n })();\n }, [\n // these change and we check\n isRegistering,\n finaliseRegistration,\n hasRegFailed,\n signature,\n page,\n query,\n router,\n // below are dependencies set on mount\n trackEventGtm,\n trackError,\n setFundraiserState,\n ]);\n\n // if registered, attempt to log in as registered user\n // show activity management modal based on registration state\n useEffect(() => {\n if (\n isDismissing ||\n !(finaliseRegistration || hasRegFailed) ||\n loggedInStatus === \"unknown\"\n ) {\n return;\n }\n\n setModalState(\n setModalState(null)}\n modalName=\"page infomation\"\n >\n \n {header}\n \n {body}\n\n {tempPassword ? (\n <>\n \n Please create a password to continue.\n \n \n \n \n \n {`We've created a personalised Giving Page for you which\n will help you fundraise for your event.`}\n \n \n {` As there wasn't an existing account linked to the email\n address provided, we've created this one for you. It's\n important that you create a password now, so you can\n easily log in to manage your Giving Page during your\n fundraising.`}\n \n \n \n \n ) : (\n <>\n {showLoginLink && (\n \n \n {\n logIn();\n }}\n data-cta-type=\"log-in\"\n >\n Log in to edit page\n \n \n \n )}\n \n \n {\n dismissModal();\n }}\n data-cta-type=\"dismiss-modal\"\n >\n Explore my page\n \n \n \n \n )}\n \n ,\n );\n }, [\n finaliseRegistration,\n hasRegFailed,\n showLoginLink,\n loggedInStatus,\n tempPassword,\n router, // querystring is cleaned when someone dismisses the modal triggering a rerender\n body,\n header,\n isDismissing, // so we check a flag if dismissing to stop modal opening infinitely\n dismissModal,\n setModalState,\n setIsDismissing,\n setFinaliseRegistration,\n trackError,\n ]);\n\n return null;\n};\n\nexport default ActivityManagementJourney;\n","import dynamic from \"next/dynamic\";\n\nimport { type StravaType, type FundraisingPageType } from \"@fwa/src/types\";\n\nconst StravaTracker = dynamic(\n () => import(\"@fwa/src/components/StravaTracker\"),\n);\n\nconst StravaTrackerForm = dynamic(\n () => import(\"@fwa/src/components/StravaTrackerForm\"),\n);\n\nexport const StravaSection = ({\n strava,\n mutatePage,\n canEdit,\n}: {\n canEdit: boolean;\n strava: StravaType;\n mutatePage: (\n data: Partial,\n ) => Promise;\n}) => {\n if (!canEdit) {\n return ;\n } else {\n return ;\n }\n};\n\nexport default StravaSection;\n","import React from \"react\";\nimport dynamic from \"next/dynamic\";\n\nimport { type FitbitType, type FundraisingPageType } from \"@fwa/src/types\";\n\nconst FitbitTracker = dynamic(\n () => import(\"@fwa/src/components/FitbitTracker\"),\n);\nconst FitbitTrackerForm = dynamic(\n () => import(\"@fwa/src/components/FitbitTrackerForm\"),\n);\n\nexport const FitbitSection = ({\n fitbit,\n mutatePage,\n canEdit,\n}: {\n canEdit: boolean;\n fitbit: FitbitType;\n mutatePage: (\n data: Partial,\n ) => Promise;\n}) => {\n if (!canEdit) {\n return ;\n } else {\n return ;\n }\n};\n\nexport default FitbitSection;\n","import dynamic from \"next/dynamic\";\n\nimport { Box, Totaliser } from \"@cruk/cruk-react-components\";\n\nimport {\n calculatePercentRounded,\n formatMoneyWithCommas,\n} from \"@fwa/src/utils/formatUtils\";\n\nimport { type FundraisingPageType } from \"@fwa/src/types\";\n\nconst EditableTargetForm = dynamic(\n () => import(\"@fwa/src/components/EditableTargetForm\"),\n);\n\ntype Props = {\n page: FundraisingPageType;\n canEdit: boolean;\n updateAndMutatePage: (\n data: Partial,\n ) => Promise;\n};\n\nexport const FundraisingPageTotaliser = ({\n page,\n canEdit,\n updateAndMutatePage,\n}: Props) => {\n const percentageOfTarget = page\n ? calculatePercentRounded(page.donationsTotalAmount, page.target)\n : 0;\n const target = formatMoneyWithCommas(page?.target ? page.target : 0);\n\n return canEdit ? (\n \n \n \n ) : (\n \n );\n};\n\nexport default FundraisingPageTotaliser;\n","import styled from \"styled-components\";\nimport { Button, type ThemeType } from \"@cruk/cruk-react-components\";\n\nconst transitionDurationSeconds = 0.5;\n\nexport const CollapseButton = styled(Button)<{ theme: ThemeType }>`\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: normal;\n margin-bottom: 0;\n height: initial;\n text-decoration: none;\n text-align: left;\n border-radius: 0;\n && {\n margin: auto;\n width: 100%;\n }\n && :focus {\n color: ${({ theme }) => theme.colors.secondary};\n }\n`;\n\nexport const Flipper = styled.div<{ $open: boolean; theme: ThemeType }>`\n transform: ${({ $open }) =>\n $open ? \"translateY(0.1em) scaleY(-1)\" : \"initial\"};\n transition-duration: ${transitionDurationSeconds}s;\n color: ${({ theme }) => theme.colors.primary};\n margin-left: ${({ theme }) => theme.spacing.xxs};\n`;\n\nexport const CollapseContent = styled.div<{\n theme: ThemeType;\n $openStatus: boolean;\n $contentHeight: string;\n $widenContentBy: string;\n}>`\n transition: ${transitionDurationSeconds}s ease;\n max-height: ${({ $openStatus, $contentHeight }) =>\n $openStatus ? `${$contentHeight}` : \"1px\"};\n visibility: ${({ $openStatus }) => ($openStatus ? \"visible\" : \"hidden\")};\n overflow: hidden;\n margin: ${({ $widenContentBy }) =>\n $widenContentBy.length ? `0 -${$widenContentBy}` : \"0\"};\n`;\n","import {\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n useRef,\n useState,\n} from \"react\";\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons\";\nimport { Box, Text, IconFa } from \"@cruk/cruk-react-components\";\nimport {\n CollapseButton,\n CollapseContent,\n Flipper,\n} from \"@fwa/src/components/CollapseCentered/styles\";\nimport { ColumnAlignCenter } from \"@fwa/src/components/styles\";\n\ntype Props = {\n title: string;\n ariaLabel: string;\n children: ReactNode;\n widenContentBy?: string;\n allCollapseState: boolean[];\n setAllCollapseState: Dispatch>;\n collapseIndex: number;\n customHeader: ReactNode;\n};\n\nexport const CollapseCentered = ({\n title,\n children,\n ariaLabel,\n widenContentBy,\n allCollapseState,\n setAllCollapseState,\n collapseIndex,\n customHeader,\n}: Props) => {\n const [contentHeight, setContentHeight] = useState(\"initial\");\n const content = useRef(null);\n\n const toggleCollapse = () => {\n const { current } = content;\n if (current !== null) {\n setContentHeight(`${current.scrollHeight}px`);\n }\n\n const newCollapseState = allCollapseState.map((collapseState, mapIndex) => {\n if (mapIndex === collapseIndex) return !allCollapseState[collapseIndex];\n return false;\n });\n setAllCollapseState(newCollapseState);\n };\n\n return (\n <>\n \n toggleCollapse()}\n data-component=\"totaliser-milestone-collapse\"\n >\n \n {customHeader || null}\n \n {title}\n \n \n \n \n \n \n \n\n \n {children}\n \n \n );\n};\n\nexport default CollapseCentered;\n","import styled from \"styled-components\";\nimport { type ThemeType } from \"@cruk/cruk-react-components\";\n\nconst CARD_WIDTH = \"220px\";\nconst IMAGE_WIDTH = \"10rem\";\n\nexport const CarouselOuter = styled.div`\n position: relative;\n`;\n\nexport const CarouselFade = styled.div<{\n theme: ThemeType;\n}>`\n position: absolute;\n top: 0;\n height: 100%;\n background: none;\n pointer-events: none;\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0) 10%,\n rgba(255, 255, 255, 0) 90%,\n rgba(255, 255, 255, 1) 100%\n );\n\n left: ${({ theme }) => `-${theme.spacing.m}`};\n right: ${({ theme }) => `-${theme.spacing.m}`};\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n left: 0;\n right: 0;\n }\n`;\n\nexport const CarouselScrollArea = styled.ul<{\n $smoothScrolling: boolean;\n theme: ThemeType;\n}>`\n display: flex;\n overflow-x: scroll;\n scroll-snap-align: center;\n scroll-snap-type: x mandatory;\n scroll-behavior: ${({ $smoothScrolling }) =>\n $smoothScrolling ? \"smooth\" : \"auto\"};\n -webkit-overflow-scrolling: touch;\n white-space: nowrap;\n list-style: none;\n margin-bottom: 0px;\n margin: ${({ theme }) => `-${theme.spacing.m}`};\n padding: ${({ theme }) =>\n `${theme.spacing.m} ${theme.spacing.s} calc(${theme.spacing.s} * 2) ${theme.spacing.s} `};\n padding-left: 10%;\n padding-right: 10%;\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n margin: 0;\n }\n`;\n\nexport const TextWrapper = styled.div`\n padding: 1em;\n border: solid 1px;\n`;\n\nexport const ValueWrapper = styled.div<{\n theme: ThemeType;\n}>`\n position: relative;\n margin-bottom: ${({ theme }) => theme.spacing.xs};\n`;\n\nexport const BadgeWrapper = styled.div`\n position: absolute;\n display: flex;\n width: 100%;\n margin-top: -1em;\n justify-content: space-around;\n`;\n\nexport const CarouselCard = styled.li<{\n theme: ThemeType;\n $isFirst: boolean;\n $isLast: boolean;\n}>`\n position: relative;\n scroll-snap-align: center;\n min-width: 60%;\n white-space: normal;\n\n &:before {\n position: absolute;\n content: \"\";\n display: ${({ $isFirst }) => ($isFirst ? \"none\" : \"block\")};\n top: calc((${IMAGE_WIDTH} / 2) + (${({ theme }) => theme.spacing.xs} / 2));\n left: 0;\n width: calc(\n 100% - (${IMAGE_WIDTH} / 2) - ${({ theme }) => theme.spacing.s}\n );\n height: 4px;\n background-color: #000;\n }\n &:after {\n position: absolute;\n content: \"\";\n display: ${({ $isLast }) => ($isLast ? \"none\" : \"block\")};\n top: calc((${IMAGE_WIDTH} / 2) + (${({ theme }) => theme.spacing.xs} / 2));\n right: 0;\n width: calc((100% - ${IMAGE_WIDTH}) / 2);\n height: 4px;\n background-color: #000;\n }\n @media (min-width: ${({ theme }) => theme.breakpoint.mobile}) {\n min-width: ${CARD_WIDTH};\n }\n`;\n\nexport const RoundedImageWrapper = styled.div<{\n theme: ThemeType;\n $isCurrent: boolean;\n}>`\n position: relative;\n margin: auto;\n border-radius: 50%;\n overflow: hidden;\n max-width: ${IMAGE_WIDTH};\n max-height: ${IMAGE_WIDTH};\n border: 2px dashed ${({ theme }) => theme.tokenColors.grey_600};\n border-style: ${({ $isCurrent }) => ($isCurrent ? \"none\" : \"dashed\")};\n background-color: white;\n && img {\n object-fit: cover;\n width: ${IMAGE_WIDTH};\n height: ${IMAGE_WIDTH};\n filter: ${({ $isCurrent }) =>\n `${$isCurrent ? \"grayscale(0%)\" : \"grayscale(100%)\"} ${$isCurrent ? \"opacity(100%)\" : \"opacity(30%)\"}`};\n }\n`;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Badge, Box, Text } from \"@cruk/cruk-react-components\";\nimport { type PageType } from \"@fwa/src/types\";\nimport { CollapseCentered } from \"@fwa/src/components/CollapseCentered\";\nimport { numberWithCommas } from \"@fwa/src/utils/formatUtils\";\nimport {\n CarouselCard,\n CarouselScrollArea,\n RoundedImageWrapper,\n BadgeWrapper,\n CarouselFade,\n CarouselOuter,\n} from \"@fwa/src/components/TotaliserImpactCarousel/styles\";\nimport { RowCenter } from \"@fwa/src/components/styles\";\n\nconst impactStatement25 = \"/assets/images/img/impact_statement_25.jpg\";\nconst impactStatement50 = \"/assets/images/img/impact_statement_50.png\";\nconst impactStatement100 = \"/assets/images/img/impact_statement_100.jpg\";\nconst impactStatement150 = \"/assets/images/img/impact_statement_250.jpg\";\nconst impactStatement200 = \"/assets/images/img/impact_statement_200.png\";\nconst impactStatement300 = \"/assets/images/img/impact_statement_300.png\";\nconst impactStatement500 = \"/assets/images/img/impact_statement_500.jpg\";\nconst impactStatement1000 = \"/assets/images/img/impact_statement_1000.jpg\";\nconst impactStatement2500 = \"/assets/images/img/impact_statement_2500.jpg\";\nconst impactStatement5000 = \"/assets/images/img/impact_statement_5000.jpg\";\n\nconst impactStatements = [\n {\n value: 25,\n img: impactStatement25,\n title: \"Kitting out our labs\",\n description:\n \"£25 could either buy 500 plastic test tubes, 5 boxes of gloves, 5 beakers, or a Bunsen burner, which are the understated tools of many experiments.\",\n },\n {\n value: 50,\n img: impactStatement50,\n title: \"Unravelling mysteries\",\n description:\n \"£50 can pay for chemicals called restriction enzymes, which cut long strands of DNA, allowing scientists to find out more about the genes that cause cancer.\",\n },\n {\n value: 100,\n img: impactStatement100,\n title: \"Spotting cancer earlier\",\n description:\n \"Early diagnosis is essential to getting the right treatment to people with cancer. £100 could pay for a cancer biopsy, where a tiny amount of a lump is removed and sent to be studied in a lab.\",\n },\n {\n value: 150,\n img: impactStatement150,\n title: \"Making diagnosis kinder\",\n description:\n \"£150 could fund a team of researchers in Manchester for half a day. They're trying to diagnose and monitor lung cancer in a less invasive way.\",\n },\n {\n value: 200,\n img: impactStatement200,\n title: \"Understanding errors in DNA\",\n description:\n \"£200 can buy DNA nucleotides, something scientists use to make copies of genes, giving us clues about how things go wrong in cancer.\",\n },\n {\n value: 300,\n img: impactStatement300,\n title: \"Finding cancer's weakness\",\n description:\n \"£300 could buy a device used to spin blood samples so different types of cells separate. Our scientists can then study the different types of cancerous cells to find out more about them.\",\n },\n {\n value: 500,\n img: impactStatement500,\n title: \"Providing cancer support\",\n description:\n \"£500 could run our online moderated forum, Cancer Chat, for a day. It's a safe space open to everyone to discuss any aspect of the disease with others in the cancer community.\",\n },\n {\n value: 1000,\n img: impactStatement1000,\n title: \"Hunting innovations\",\n description:\n \"To help test potentially life-saving treatments and find the most promising new cancer drugs, £1,000 could buy imaging software that our scientists use to film cells in real time.\",\n },\n {\n value: 2500,\n img: impactStatement2500,\n title: \"Delivering treatments\",\n description:\n \"The PETReA trial aims to help doctors decide how best to treat lymphoma, a cancer of the white blood cells. £2,500 could fund this trial for five days.\",\n },\n {\n value: 5000,\n img: impactStatement5000,\n title: \"Keeping cancer in remission\",\n description:\n \"£5,000 could fund the Add-Aspirin trial for five days. This clinical trial is investigating whether aspirin could stop some types of cancer coming back after treatment.\",\n },\n];\n\nexport type CarouselProps = {\n page: PageType;\n};\n\nexport const TotaliserImpactCarousel = ({ page }: CarouselProps) => {\n const scrollRef = useRef(null);\n const targetOrTotalValue = Math.max(\n page.donationsTotalAmount || 0,\n page.target || 0,\n );\n\n const filterStatements = (statements: typeof impactStatements) => {\n const filteredByValue = statements.filter(\n (statement) => statement.value <= targetOrTotalValue,\n );\n\n if (statements[filteredByValue.length])\n return [...filteredByValue, statements[filteredByValue.length]];\n\n return filteredByValue;\n };\n const filteredImpactStatements =\n !page.target && page.donationsTotalAmount === 0\n ? impactStatements\n : filterStatements(impactStatements);\n\n const [allCollapseState, setAllCollapseState] = useState(\n filteredImpactStatements.map(() => false),\n );\n\n const scrollToPosition = useCallback(() => {\n const getCurrentItem = (total: number) => {\n const index = filteredImpactStatements.findIndex(\n (item) => item.value > total,\n );\n if (index === -1) return filteredImpactStatements.length - 1;\n return index - 1;\n };\n\n const scrollElement = scrollRef.current;\n if (!scrollElement || !page?.donationsTotalAmount) return;\n const currentItem = getCurrentItem(page?.donationsTotalAmount);\n if (currentItem < 0) return;\n const element = scrollElement.children[currentItem] as HTMLDivElement;\n if (!element) return;\n const scrollX = element.offsetLeft - scrollElement.clientWidth / 2;\n scrollElement.scrollTo({ top: 0, left: scrollX, behavior: \"instant\" });\n }, [filteredImpactStatements, page?.donationsTotalAmount]);\n\n useEffect(() => {\n if (page?.donationsTotalAmount) {\n scrollToPosition();\n }\n }, [page?.donationsTotalAmount, scrollToPosition]);\n\n return (\n \n \n \n {filteredImpactStatements.map((milestone, index) => (\n \n \n = milestone.value}\n >\n \"\"\n \n \n \n \n {`£${numberWithCommas(milestone.value)}`}\n \n \n \n \n }\n >\n {milestone.description}\n \n \n ))}\n \n \n \n \n );\n};\nexport default TotaliserImpactCarousel;\n","import { useEffect, useState } from \"react\";\nimport dynamic from \"next/dynamic\";\nimport NextLink from \"next/link\";\nimport { Heading, Text, Box, Button } from \"@cruk/cruk-react-components\";\n\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\nimport { TotalsSection } from \"@fwa/src/components/TotalsSection\";\n\nimport { Border } from \"@fwa/src/components/styles\";\n\nimport { type FundraisingPageType } from \"@fwa/src/types\";\n\nconst FeedListFilter = dynamic(\n () => import(\"@fwa/src/components/FeedListFilter\"),\n);\n\ntype Props = {\n canEdit: boolean;\n feedInView: boolean;\n isStravaMetric: boolean;\n fitbitDailyTargetSteps: number;\n firstName: string;\n url: string | null;\n page: FundraisingPageType;\n};\n\nexport const FundraisingPageLatestUpdates = ({\n page,\n canEdit,\n feedInView,\n isStravaMetric,\n fitbitDailyTargetSteps,\n firstName,\n url,\n}: Props) => {\n const displayNameOrUserName =\n page.owner?.displayName !== undefined ? page.owner?.displayName : firstName;\n const { trackEventGtm } = useTracking();\n const [feedItemTotals, setFeedItemTotals] = useState({\n feeditems:\n 0 +\n page.donationsCount +\n page.postsCount +\n (page?.milestonesCount || 0) +\n (page?.strava?.count || 0) +\n (page?.fitbit?.count || 0),\n donations: page.donationsCount,\n posts: page.postsCount,\n activitys: 0 + (page?.strava?.count || 0) + (page?.fitbit?.count || 0),\n milestones: page?.milestonesCount || 0,\n });\n\n useEffect(() => {\n if (page) {\n const newTotals = {\n feeditems:\n 0 +\n page.donationsCount +\n page.postsCount +\n (page?.milestonesCount || 0) +\n (page?.strava?.count || 0) +\n (page?.fitbit?.count || 0),\n donations: page.donationsCount,\n posts: page.postsCount,\n activitys: 0 + (page?.strava?.count || 0) + (page?.fitbit?.count || 0),\n milestones: page?.milestonesCount || 0,\n };\n setFeedItemTotals(newTotals);\n }\n }, [page]);\n\n return (\n \n \n Latest updates\n \n {feedInView && (\n \n )}\n\n {!page.donationsCount && page.pageStatus !== \"closed\" && (\n \n \n {`${displayNameOrUserName} needs your support. Be the first to make a donation.`}\n {\n trackEventGtm({\n event: \"donate_cta\",\n cta: \"first donation\",\n });\n }}\n data-cta-type=\"donate\"\n >\n \n \n \n \n )}\n \n \n );\n};\n\nexport default FundraisingPageLatestUpdates;\n","import NextLink from \"next/link\";\nimport { useSwrGet } from \"@fwa/src/hooks/useSwrGet\";\nimport { Heading, Text, Box, Link } from \"@cruk/cruk-react-components\";\n\nimport { fwsUrlFundraiserGetFirstOpenFundraisingPage } from \"@fwa/src/services/fundraiserService\";\n\nimport { type FundraisingPageType, type FwsResponseData } from \"@fwa/src/types\";\n\ntype Props = {\n userName: string;\n fundraiserId: string;\n};\n\nexport const FundraisingPageClosedInfo = ({\n userName,\n fundraiserId,\n}: Props) => {\n const url = fundraiserId\n ? `${fwsUrlFundraiserGetFirstOpenFundraisingPage({\n fundraiserId,\n })}`\n : null;\n const { data } = useSwrGet>(url);\n const firstPage = data?.results[0];\n\n return (\n \n This Giving Page is now closed\n \n Thank you for raising money for life-saving work. All the money raised\n is being used to help beat cancer\n \n Still want to donate?\n {firstPage && (\n <>\n \n \n \n {`View ${userName}'s other Giving Page`}\n \n \n \n or\n \n )}\n \n \n Donate directly to Cancer Research UK\n \n \n \n );\n};\n\nexport default FundraisingPageClosedInfo;\n","import styled from \"styled-components\";\nimport { type ThemeType } from \"@cruk/cruk-react-components\";\n\nexport const DisabledTextBorder = styled.div<{ theme: ThemeType }>`\n background-color: ${({ theme }) => theme.tokenColors.grey_200};\n margin-bottom: ${({ theme }) => theme.spacing.xxs};\n > * {\n min-height: ${({ theme }) => theme.spacing.s};\n padding: ${({ theme }) => theme.spacing.xs};\n }\n`;\n","import { type ChangeEvent, useRef, useState } from \"react\";\nimport {\n Box,\n Text,\n UserBlock,\n LabelWrapper,\n TextField,\n} from \"@cruk/cruk-react-components\";\n\nimport Editable from \"@fwa/src/components/Editable\";\nimport {\n DISPLAY_NAME_MAX_LENGTH,\n validateDisplayName,\n} from \"@fwa/src/validation/page\";\nimport { DisabledTextBorder } from \"@fwa/src/components/EditableDisplayNameForm/styles\";\n\nimport { type PageType } from \"@fwa/src/types\";\nimport { calcLength } from \"@fwa/src/utils/formUtils\";\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\n\ntype Props = {\n avatarUrl: string;\n canEdit: boolean;\n editButtonColor?: string;\n fieldName: string;\n fullWidth?: boolean;\n handleEditData: (\n data: Record,\n refresh?: boolean,\n ) => Promise;\n page: PageType;\n userName: string;\n};\n\nexport const EditableDisplayNameForm = ({\n avatarUrl,\n canEdit,\n editButtonColor,\n fieldName,\n fullWidth = true,\n handleEditData,\n page,\n userName,\n}: Props) => {\n const initialValue = page?.owner?.displayName || \"\";\n const textRef = useRef(null);\n\n const { trackError } = useTracking();\n\n const [validationMessage, setValidationMessage] = useState(\"\");\n const [charCount, setCharCount] = useState(calcLength(initialValue || \"\"));\n const [isLoading, setIsLoading] = useState(false);\n\n const handleSubmit = async (): Promise => {\n if (!textRef.current) return;\n const validationMessageString = validateDisplayName(\n textRef?.current?.value,\n );\n setValidationMessage(validationMessageString || \"\");\n if (validationMessageString) {\n return;\n } else {\n setIsLoading(true);\n return handleEditData(\n {\n owner: {\n displayName: textRef?.current?.value,\n },\n },\n false,\n )\n .then((pageData) => {\n setIsLoading(false);\n return pageData;\n })\n .catch((error) => {\n setValidationMessage(\"Unable to submit\");\n setIsLoading(false);\n trackError(error as Error, { component: \"EditableDisplayNameForm\" });\n return;\n });\n }\n };\n\n const handleChange = (e: ChangeEvent) => {\n const input = e.target as HTMLInputElement;\n setCharCount(calcLength(input.value));\n };\n\n return canEdit ? (\n \n \n\n {`${\n DISPLAY_NAME_MAX_LENGTH - charCount\n } characters remaining`}\n\n \n \n {`${page.fundraiser.forename} ${page.fundraiser.surname}`}\n \n \n \n }\n viewNode={\n \n }\n handleSubmit={handleSubmit}\n isLoading={isLoading}\n editButtonColor={editButtonColor}\n editButtonPosition=\"center\"\n tooltip=\"Edit page user display name\"\n fieldName={fieldName}\n />\n ) : (\n \n );\n};\n\nexport default EditableDisplayNameForm;\n","import styled from \"styled-components\";\nimport dynamic from \"next/dynamic\";\n\nconst ReactPlayer = dynamic(() => import(\"react-player\"), { ssr: false });\n\nexport const ResponsiveReactPlayer = styled(ReactPlayer)`\n aspect-ratio: 16 / 9;\n`;\n\nexport default ResponsiveReactPlayer;\n","import { useEffect, useState } from \"react\";\nimport dynamic from \"next/dynamic\";\nimport { Box, Heading } from \"@cruk/cruk-react-components\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { useOptimizelyContext } from \"@fwa/src/contexts/OptimizelyContext\";\nimport { ResponsiveReactPlayer } from \"@fwa/src/components/FundraisingPageVideo/styles\";\nimport { type FundraisingPageType } from \"@fwa/src/types\";\n\nconst EditableVideoUrlForm = dynamic(\n () => import(\"@fwa/src/components/EditableVideoUrlForm\"),\n);\n\ntype Props = {\n canEdit: boolean;\n page: FundraisingPageType;\n updateAndMutatePage: (\n data: Partial,\n refresh?: boolean,\n ) => Promise;\n};\n\nexport const FundraisingPageVideo = ({\n canEdit,\n page,\n updateAndMutatePage,\n}: Props) => {\n const { setOptimizelyUserAttributes } = useOptimizelyContext();\n\n const [hasPlayed, setHasPlayed] = useState(false);\n\n const { ref: innerRef, inView } = useInView({\n triggerOnce: true,\n });\n\n const handlePlay = () => {\n setOptimizelyUserAttributes({ video_played: 1 });\n setHasPlayed(true);\n };\n\n useEffect(() => {\n if (inView) {\n const actualHasPlayed = hasPlayed ? 1 : 0;\n setOptimizelyUserAttributes({ video_played: actualHasPlayed });\n }\n }, [inView]);\n\n return (\n <>\n {canEdit || page.videoUrl ? (\n \n \n My Video\n \n {canEdit ? (\n \n ) : page?.videoUrl ? (\n
\n handlePlay()}\n config={{\n youtube: {\n playerVars: {\n origin: \"https://www.youtube.com\",\n // widget_referrer: FWA_BASE_URL, can track our views in YT studio\n },\n },\n }}\n />\n
\n ) : null}\n \n ) : null}\n \n );\n};\n\nexport default FundraisingPageVideo;\n","import NextLink from \"next/link\";\nimport { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport * as QRCode from \"qrcode\";\n\nimport {\n faDownload,\n faPrint,\n faQrcode,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {\n Heading,\n Text,\n IconFa,\n Modal,\n Box,\n Button,\n type ThemeType,\n Collapse,\n} from \"@cruk/cruk-react-components\";\n\nimport { ColumnAlignCenter } from \"@fwa/src/components/styles\";\n\nimport { useOptimizelyContext } from \"@fwa/src/contexts/OptimizelyContext\";\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\n\nimport { isBrowser } from \"@fwa/src/utils/browserUtils\";\nimport { useRouter } from \"next/router\";\nimport { useModalContext } from \"@fwa/src/contexts/ModalContext\";\n\nconst QR_CODE_WIDTH = 240;\nconst QR_CODE_DOWNLOAD_WIDTH = 1024;\n\nconst QrCodeWrapper = styled.div<{ theme: ThemeType }>`\n max-width: ${QR_CODE_WIDTH}px;\n margin-bottom: ${({ theme }) => theme.spacing.s};\n img {\n width: 100%;\n height: auto;\n }\n`;\n\nconst RowReverse = styled.div`\n display: flex;\n flex-direction: row-reverse;\n`;\n\nexport const QrModal = () => {\n const router = useRouter();\n const url = router.asPath;\n const { trackError } = useTracking();\n const [qrCodeImageDataUrl, setQrCodeImageDataUrl] = useState(\"\");\n const [qrCodeImageDownloadDataUrl, setQrCodeImageDownloadDataUrl] =\n useState(\"\");\n const { trackEventOptimizely } = useOptimizelyContext();\n const [, setModalState] = useModalContext();\n\n const handleClose = () => {\n setModalState(false);\n };\n\n useEffect(() => {\n if (!isBrowser) return;\n const linkUrl = `${window.location.href.split(\"?\")[0]}?utm_medium=qr_code&utm_source=online_fundraising`;\n\n // display QR code\n QRCode.toDataURL(linkUrl, {\n type: \"image/png\",\n width: QR_CODE_WIDTH,\n margin: 0,\n })\n .then((imageUrl: string) => {\n setQrCodeImageDataUrl(imageUrl);\n return;\n })\n .catch((err: Error) => {\n trackError(err, { component: \"QrCodeSettings\" });\n });\n\n // download QR code\n QRCode.toDataURL(linkUrl, {\n type: \"image/png\",\n width: QR_CODE_DOWNLOAD_WIDTH,\n margin: 0,\n })\n .then((imageUrl: string) => {\n setQrCodeImageDownloadDataUrl(imageUrl);\n return;\n })\n .catch((err: Error) => {\n trackError(err, { component: \"QrCodeSettings\" });\n });\n }, [trackError]);\n\n return (\n \n \n \n \n \n \n Scan or print QR code\n \n \n Scanning this QR code provides an easy way to bring people to this\n Giving Page when out and about.\n \n \n Show supporters the QR code below, or you can print posters with the\n QR code to use later.\n \n\n \n \n
    \n
  1. \n Ask supporters to open their phone camera and point it at the QR\n code.\n
  2. \n
  3. \n Once the phone camera detects the QR code, a button or link\n should appear.\n
  4. \n
  5. \n Clicking the button or link will take them to this Giving Page\n when connected to the internet.\n
  6. \n
\n
\n \n\n \n \n {`Select \"Print poster\" to open a new tab with a printable poster\n which includes the QR code.`}\n \n \n {`Select \"Download image\" to download the QR code as an image file.\n You can then resize and print it to use in your own fundraising materials such\n as collection buckets and t-shirts.`}\n \n \n\n \n \n \n \"QR\n \n {url ? (\n \n {\n trackEventOptimizely({ eventKey: \"of_goto_qr_print_path\" });\n }}\n data-cta-type=\"qr-code-print-link\"\n >\n \n \n \n \n Print Poster\n \n \n \n ) : null}\n \n {\n trackEventOptimizely({ eventKey: \"of_download_qr\" });\n }}\n download=\"qr-code.png\"\n title=\"Download QR code\"\n style={{ textDecoration: \"none\" }}\n >\n \n \n \n \n Download image\n \n \n \n \n \n \n {\n handleClose();\n }}\n >\n Dismiss\n \n \n
\n \n );\n};\n\nexport default QrModal;\n","import styled from \"styled-components\";\nimport { Box, type ThemeType } from \"@cruk/cruk-react-components\";\n\nconst LEFT_COLUMN_WIDTH = \"376px\";\n\nexport const ActionButtonWrapper = styled(Box)<{ theme: ThemeType }>`\n width: 100%;\n margin: 0;\n background-color: ${({ theme }) => theme.colors.backgroundLight} !important;\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 99;\n border-top: solid 1px ${({ theme }) => theme.tokenColors.grey_300};\n box-shadow: ${({ theme }) => theme.shadows.l};\n`;\n\nexport const ActionButtonFlex = styled.div`\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n flex-direction: row;\n`;\n\nexport const TotaliserButtonsFlex = styled.div<{ theme: ThemeType }>`\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: center;\n flex-direction: row;\n flex-wrap: wrap-reverse;\n\n > * {\n margin: ${({ theme }) => `0 ${theme.spacing.xs} ${theme.spacing.xs}`};\n }\n`;\n\nexport const DesktopRight = styled.div<{ theme: ThemeType }>`\n display: block;\n width: 100%;\n @media (min-width: ${({ theme }) => theme.breakpoint.desktop}) {\n width: ${({ theme }) =>\n `calc(100% - ${LEFT_COLUMN_WIDTH} - ${theme.spacing.m})`};\n }\n`;\n\nexport const DesktopLeft = styled.div<{ theme: ThemeType }>`\n display: block;\n width: 100%;\n @media (min-width: ${({ theme }) => theme.breakpoint.desktop}) {\n width: ${LEFT_COLUMN_WIDTH};\n }\n margin-right: ${({ theme }) => theme.spacing.m};\n`;\n\nexport const ColumnWrapper = styled.div<{ theme: ThemeType }>`\n display: flex;\n flex-direction: column;\n\n @media (min-width: ${({ theme }) => theme.breakpoint.desktop}) {\n flex-direction: row-reverse;\n }\n`;\n","import { useEffect } from \"react\";\nimport dynamic from \"next/dynamic\";\nimport { useRouter } from \"next/compat/router\";\nimport NextLink from \"next/link\";\nimport { Box, Button, IconFa, Loader } from \"@cruk/cruk-react-components\";\nimport { useInView } from \"react-intersection-observer\";\nimport { faQrcode, faShareAlt } from \"@fortawesome/free-solid-svg-icons\";\n\nimport { useSwrGet } from \"@fwa/src/hooks/useSwrGet\";\nimport { queryAsString } from \"@fwa/src/utils/urlUtils\";\nimport { userNameForPage, firstNameForPage } from \"@fwa/src/utils/pageUtils\";\nimport {\n fwsUrlFundraisingPageSlug,\n updatePage,\n} from \"@fwa/src/services/fundraisingPageService\";\nimport { useFundraiserContext } from \"@fwa/src/contexts/FundraiserContext\";\nimport { useTracking } from \"@fwa/src/hooks/useTracking\";\nimport { isPast, isToday } from \"@fwa/src/utils/timeUtils\";\nimport { useModalContext } from \"@fwa/src/contexts/ModalContext\";\nimport { sendGTMTrackingEvent } from \"@fwa/src/services/gtm\";\nimport { imagePathFromImageType } from \"@fwa/src/services/imageService\";\nimport { useOptimizelyContext } from \"@fwa/src/contexts/OptimizelyContext\";\n\nimport { EditableInMemoryForm } from \"@fwa/src/components/EditableInMemoryForm\";\nimport { ErrorPageWrapper } from \"@fwa/src/components/ErrorPageWrapper\";\nimport { FeedItemShared } from \"@fwa/src/components/FeedItemShared\";\nimport { FundraisingPageActivityBlock } from \"@fwa/src/components/FundraisingPageActivityBlock\";\nimport { FundraisingPageAdmin } from \"@fwa/src/components/FundraisingPageAdmin\";\nimport { RestrictionSection } from \"@fwa/src/components/RestrictionSection\";\nimport { Share } from \"@fwa/src/components/Share\";\nimport { ActivityManagementJourney } from \"@fwa/src/components/ActivityManagementJourney\";\nimport { PageHeaderImage } from \"@fwa/src/components/PageHeaderImage\";\nimport { StravaSection } from \"@fwa/src/components/StravaSection\";\nimport { FitbitSection } from \"@fwa/src/components/FitbitSection\";\nimport { FundraisingPageTotaliser } from \"@fwa/src/components/FundraisingPageTotaliser\";\nimport { TotaliserImpactCarousel } from \"@fwa/src/components/TotaliserImpactCarousel\";\nimport { FundraisingPageLatestUpdates } from \"@fwa/src/components/FundraisingPageLatestUpdates\";\nimport { FundraisingPageClosedInfo } from \"@fwa/src/components/FundraisingPageClosedInfo\";\n\nimport { PageTitle } from \"@fwa/src/components/PageTitle\";\nimport { PageSubtitle } from \"@fwa/src/components/PageSubtitle \";\nimport { PageStory } from \"@fwa/src/components/PageStory\";\nimport { EditableDisplayNameForm } from \"@fwa/src/components/EditableDisplayNameForm\";\nimport { FundraisingPageVideo } from \"@fwa/src/components/FundraisingPageVideo\";\nimport { QrModal } from \"@fwa/src/components/QrModal\";\n\nimport {\n ContentMaxWidth,\n RowStretch,\n HeaderGroup,\n AvatarResponsiveWrapper,\n DividerLight,\n RowAlignCenter,\n} from \"@fwa/src/components/styles\";\n\nimport {\n ActionButtonWrapper,\n ActionButtonFlex,\n TotaliserButtonsFlex,\n DesktopRight,\n DesktopLeft,\n ColumnWrapper,\n} from \"@fwa/src/components/FundraisingPage/styles\";\n\nimport {\n type FeedItemType,\n type FundraisingPageType,\n type PageType,\n type RestrictionType,\n} from \"@fwa/src/types\";\n\nconst Gallery = dynamic(() => import(\"@fwa/src/components/Gallery\"));\nconst FundraisingPageSettings = dynamic(\n () => import(\"@fwa/src/components/FundraisingPageSettings\"),\n);\nconst FundraisingPageModalsManager = dynamic(\n () => import(\"@fwa/src/components/FundraisingPageModalsManager\"),\n);\nconst FitbitConnectionError = dynamic(\n () => import(\"@fwa/src/components/FitbitConnectionError\"),\n);\nconst FacebookConnectionError = dynamic(\n () => import(\"@fwa/src/components/FacebookConnectionError\"),\n);\nconst ToastMessages = dynamic(\n () => import(\"@fwa/src/components/ToastMessages\"),\n);\n\ntype Props = {\n pageData: FundraisingPageType;\n sharedFeedItemData?: FeedItemType;\n};\n\nexport const FundraisingPage = ({ pageData, sharedFeedItemData }: Props) => {\n const [fundraiserState] = useFundraiserContext();\n const { trackEventOptimizely } = useOptimizelyContext();\n const { trackEventGtm, trackError } = useTracking();\n const router = useRouter();\n // figure out unique page url for page cacheId\n const { slug, feed } = router?.query || {};\n const slugString = queryAsString(slug);\n const feedString = queryAsString(feed);\n const feedId = sharedFeedItemData?.uniqueId || feedString || \"\";\n const [modalState, setModalState] = useModalContext();\n\n const { ref: feedRef, inView: feedInView } = useInView({\n triggerOnce: true,\n rootMargin: \"200px\",\n });\n const { ref: galleryRef, inView: galleryInView } = useInView({\n triggerOnce: true,\n rootMargin: \"200px\",\n });\n\n const url = slugString.length\n ? `${fwsUrlFundraisingPageSlug({ slug: slugString })}`\n : null;\n // page cache\n\n const opts = { fallbackData: pageData };\n const {\n data: page,\n error,\n mutate,\n } = useSwrGet(url, opts);\n const pageFundraiser = page?.fundraiser;\n // Used updateing an attribute on the page object on FWS API and then mutating the local page object\n const updateAndMutatePage = async (\n partialData: Partial,\n refresh?: boolean,\n ) => {\n try {\n if (\"activityName\" in partialData) {\n trackEventOptimizely({ eventKey: \"activity_name_updated\" });\n }\n if (\"activityDateTime\" in partialData) {\n trackEventOptimizely({ eventKey: \"activity_date_updated\" });\n }\n if (\"title\" in partialData) {\n trackEventOptimizely({ eventKey: \"title_updated\" });\n }\n if (\"videoUrl\" in partialData) {\n trackEventOptimizely({ eventKey: \"video_updated\" });\n }\n } catch {\n // nothing\n }\n\n return updatePage({ pageId: page?.uniqueId || \"\", data: partialData })\n .then(\n (updatedPageData) =>\n mutate(\n updatedPageData,\n refresh || false,\n ) as Promise,\n )\n .catch((err) => {\n trackError(err as Error, { component: \"FundraisingPage\" });\n });\n };\n\n // this is when we want to mutate the page but the data is set via an alternative api endpoint\n // for example setting the header image which has its own endpoint to create an image entity before attaching to a page\n // but header image data still appears in page data so we can't use updateAndMutatePage.\n const mutatePage = (partialData: Partial) =>\n mutate({ ...page, ...partialData }, false) as Promise<\n undefined | void | FundraisingPageType\n >;\n\n const canEdit: boolean =\n !!fundraiserState?.fundraiser?.uniqueId &&\n fundraiserState?.fundraiser?.uniqueId === page?.fundraiser?.uniqueId;\n const isStravaMetric = page?.strava?.useMetric ?? true;\n const fitbitTargetSteps = page?.fitbit?.targetSteps || 0;\n const fitbitDuration =\n page?.fitbit?.startDate && page?.fitbit?.endDate\n ? Math.round(\n (new Date(`${page?.fitbit?.endDate}`).getTime() -\n new Date(`${page?.fitbit?.startDate}`).getTime()) /\n (1000 * 60 * 60 * 24),\n ) + 1\n : 0;\n const fitbitDailyTargetSteps = fitbitTargetSteps\n ? fitbitTargetSteps / fitbitDuration\n : 0;\n const fitbitValid = fundraiserState?.fundraiser?.fitbitUser?.valid ?? true;\n const isFacebookUserValid =\n fundraiserState?.fundraiser?.facebookUser?.valid ?? true;\n const isFacebookFundraiserValid =\n page?.facebookFundraiser && canEdit ? page.facebookFundraiser.valid : true;\n\n const userName = page ? userNameForPage(page) : \"\";\n const firstName = page ? firstNameForPage(page) : \"\";\n\n const avatarUrl =\n !page?.owner && page?.fundraiser?.profileImage\n ? page.fundraiser.profileImage.entityType === \"ImageFacebook\"\n ? `${page.fundraiser.profileImage.url}?width=300&height=300`\n : imagePathFromImageType(page.fundraiser?.profileImage)\n : \"\";\n\n const restriction: RestrictionType | null =\n page?.restriction ||\n page?.fundraisingPageType?.restriction ||\n page?.brand?.restriction ||\n page?.fundraisingPageType?.brand?.restriction ||\n null;\n\n const pageCloseDate = page?.closeDate ? new Date(page.closeDate) : null;\n const isPageClosed: boolean =\n page?.pageStatus === \"closed\" ||\n (pageCloseDate && (isToday(pageCloseDate) || isPast(pageCloseDate))) ||\n false;\n\n const handleShowQrClick = () => {\n if (modalState || !page) return;\n setModalState();\n trackEventOptimizely({ eventKey: \"of_show_qr_code_modal\" });\n };\n\n // If logged and canEdit in refresh because we might have non logged in data cached on load\n // this might be missing props like latestMilestone refetch\n\n useEffect(() => {\n const hasLogginInPageData =\n pageFundraiser && \"emailAddress\" in pageFundraiser;\n if (\n fundraiserState.loggedInStatus === \"loggedIn\" &&\n !hasLogginInPageData &&\n canEdit\n ) {\n mutate().catch((err) => {\n trackError(err as Error, { component: \"FundraisingPage\" });\n });\n }\n }, [fundraiserState, pageFundraiser, trackError, mutate, canEdit]);\n\n useEffect(() => {\n sendGTMTrackingEvent({\n event: \"pageView\",\n pagePath: \"/fundraising-page\",\n pageTitle: \"fundraising page\",\n });\n }, []);\n\n return (\n \n {/* Display modal */}\n {modalState}\n\n {canEdit && }\n\n \n {/* Loading state */}\n {!page ? (\n \n ) : (\n <>\n {/* Data state */}\n \n\n {canEdit && page?.facebookFundraiser && (\n \n )}\n {canEdit && page?.fitbit && (\n \n )}\n\n {canEdit && }\n\n {/* Top actions block */}\n \n \n \n \n \n Share\n \n \n {!isPageClosed && (\n {\n trackEventGtm({\n event: \"donate_cta\",\n cta: \"header\",\n });\n }}\n data-cta-type=\"donate\"\n >\n \n \n )}\n \n \n {/* Shared feedItem */}\n {(sharedFeedItemData || !!feedString.length) && (\n \n )}\n\n \n \n \n \n \n \n {/* TitleBlock */}\n \n \n {/* Header image */}\n \n \n \n \n\n \n {/* Totaliser */}\n \n \n \n {restriction === null ? (\n \n ) : null}\n \n \n \n \n Share\n \n \n {!isPageClosed && (\n {\n trackEventGtm({\n event: \"donate_cta\",\n cta: \"totaliser\",\n });\n }}\n data-cta-type=\"donate\"\n >\n \n \n )}\n \n \n \n \n \n \n QR code\n \n \n \n\n {/* ActivityBlock */}\n \n\n {/* Page connections settings section */}\n {canEdit && (\n \n \n \n )}\n {isPageClosed && (\n \n \n \n )}\n \n\n \n \n {/* connections, enhance section */}\n {canEdit && (\n \n \n \n )}\n {/* Activity trackers */}\n {(page.strava || page.fitbit) && (\n \n {page.strava && (\n \n \n \n )}\n {page.strava && page.fitbit && (\n \n \n \n )}\n {page.fitbit && (\n \n \n \n )}\n \n )}\n {/* subtitle and story block */}\n \n \n {/* In memory section */}\n \n\n \n\n \n\n
\n {galleryInView && (\n \n )}\n
\n
\n \n \n \n
\n\n \n
\n {/* // id=post set to allow progress section to scroll as feed section\n may not be loaded. */}\n \n
\n
\n
\n \n )}\n
\n {page ? (\n \n \n \n \n \n \n Share\n \n \n {!isPageClosed && (\n {\n trackEventGtm({\n event: \"donate_cta\",\n cta: \"bottom_bar\",\n });\n }}\n data-cta-type=\"donate\"\n >\n \n \n )}\n \n \n \n ) : null}\n
\n );\n};\n\nexport default FundraisingPage;\n","import { useEffect } from \"react\";\nimport { type NextPageContext } from \"next\";\nimport Head from \"next/head\";\nimport { getCache } from \"@fwa/src/store/SwrCache\";\n\nimport { pageFetcher } from \"@fwa/src/services/apiClient\";\nimport { fwsUrlFundraisingPageSlug } from \"@fwa/src/services/fundraisingPageService\";\nimport { fwsUrlFeedItem } from \"@fwa/src/services/feedItemService\";\nimport { queryAsString } from \"@fwa/src/utils/urlUtils\";\nimport { isBrowser } from \"@fwa/src/utils/browserUtils\";\nimport { getShareContentFromEntity } from \"@fwa/src/utils/shareUtils\";\nimport { useBrandContext } from \"@fwa/src/contexts/BrandContext\";\n\nimport { FundraisingPage } from \"@fwa/src/components/FundraisingPage\";\nimport { ErrorPageWrapper } from \"@fwa/src/components/ErrorPageWrapper\";\n\nimport {\n type FundraisingPageType,\n type ResponseError,\n type FeedItemType,\n type BrandNameType,\n} from \"@fwa/src/types\";\n\ntype PageProps = {\n pageData?: FundraisingPageType;\n error?: ResponseError;\n sharedFeedItemData?: FeedItemType;\n themeName?: BrandNameType;\n};\n\nconst Page = ({\n pageData,\n error,\n themeName,\n sharedFeedItemData,\n}: PageProps) => {\n const [brandName, setBrandName] = useBrandContext();\n\n useEffect(() => {\n if (!!themeName && themeName !== brandName) {\n setBrandName(themeName);\n }\n }, [themeName, brandName, setBrandName]);\n\n const shareData = sharedFeedItemData || pageData;\n\n const { title, description, image } = shareData\n ? getShareContentFromEntity(shareData)\n : { title: \"\", description: \"\", image: \"\" };\n\n return (\n \n {pageData && (\n <>\n \n {title}\n \n \n {/* sharing meta */}\n \n {description?.length && (\n <>\n \n \n \n )}\n \n \n {image && (\n <>\n \n \n \n \n \n )}\n {/* end sharing meta */}\n \n \n \n )}\n \n );\n};\n\nPage.getInitialProps = async ({\n query,\n res,\n}: NextPageContext): Promise => {\n if (res) {\n res.setHeader(\"Cache-Control\", \"max-age=300, stale-while-revalidate=3600\");\n }\n\n const { slug, feed } = query;\n const slugString = queryAsString(slug);\n const feedString = queryAsString(feed);\n const getThemeName = (page: FundraisingPageType) =>\n page?.fundraisingPageType?.brand?.name;\n\n // ---Page data---\n const url = fwsUrlFundraisingPageSlug({ slug: slugString || \"\" });\n if (isBrowser) {\n const cache = getCache();\n const cachedData = cache.get(url)?.data as FundraisingPageType;\n if (cachedData)\n return {\n pageData: cachedData,\n error: undefined,\n themeName: getThemeName(cachedData),\n };\n }\n const { pageData, error } = await pageFetcher(url);\n\n // ---Shared feed item data---\n // Let SWR handle errors async component uses modals/react portal and needs DOM anyway\n // There just wont be any initial data,\n const feedItemUrl = feedString.length\n ? fwsUrlFeedItem({ feedItemId: feedString })\n : null;\n const { pageData: sharedFeedItemData } =\n await pageFetcher(feedItemUrl);\n\n return {\n pageData,\n error,\n sharedFeedItemData,\n themeName: getThemeName(pageData!),\n };\n};\n\nexport default Page;\n","export const secondsToDurationString = (seconds: number) => {\n const duration = Number(seconds);\n const h = Math.floor(duration / 3600);\n const m = Math.floor((duration % 3600) / 60);\n const s = Math.floor((duration % 3600) % 60);\n const hDisplay = h ? `${h}h` : \"\";\n const mDisplay = m ? `${m}m` : \"\";\n const sDisplay = s ? `${s}s` : \"\";\n return [hDisplay, mDisplay, sDisplay].join(\" \").replace(\" \", \" \").trim();\n};\n\nexport const isPast = (date: Date): boolean => {\n const now = new Date().getTime();\n const time = date.getTime();\n return time < now;\n};\n\nexport const isFuture = (date: Date): boolean => {\n const now = new Date().getTime();\n const time = date.getTime();\n return time > now;\n};\n\nexport const isToday = (date: Date | null) => {\n if (!date) {\n return false;\n }\n const today = new Date();\n return (\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n );\n};\n\nexport const isTomorrow = (date: Date | null) => {\n if (!date) {\n return false;\n }\n const today = new Date();\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n return (\n date.getDate() === tomorrow.getDate() &&\n date.getMonth() === tomorrow.getMonth() &&\n date.getFullYear() === tomorrow.getFullYear()\n );\n};\n\nexport const isValidDate = (d: Date) =>\n d instanceof Date && !Number.isNaN(d.getTime());\n\nexport const durationFromDateStrings = (\n startDateString?: string | null,\n endDateString?: string | null,\n) =>\n startDateString?.length && endDateString?.length\n ? durationFromDates(new Date(startDateString), new Date(endDateString))\n : 0;\n\nexport const durationFromDates = (\n startDate?: Date | null,\n endDate?: Date | null,\n) =>\n startDate && endDate\n ? Math.round(\n (endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24),\n ) + 1\n : 0;\n\nexport const getMiddayAtomTimeStringFromDate = (date?: Date) => {\n if (!date) {\n return \"\";\n }\n const currYear = date.getFullYear();\n const currMonth = date.getMonth();\n const currDate = date.getDate();\n\n const dateString = new Date(currYear, currMonth, currDate, 12)\n .toISOString()\n .split(\"T\")[0];\n\n const utcMiddayTimeString = `${dateString}T12:00:00+00:00`;\n return utcMiddayTimeString;\n};\n"],"names":["ChangePasswordForm","onSuccess","onCancel","cancelButtonText","submitButtonText","trackError","useTracking","fundraiserState","setFundraiserState","useFundraiserContext","fundraiser","tempPassword","isLoading","setIsLoading","useState","showPassword","setShowPassword","passwordsMatch","setPasswordsMatch","currentPasswordCorrect","setCurrentPasswordCorrect","oldPassword","setOldPassword","newPassword1","setNewPassword1","newPassword2","setNewPassword2","submissionErrorMessage","setSubmissionErrorMessage","firstTimePassword","hasSetPassword","oauthUser","passwordStrength","clearErrors","reset","div","data-component","Box","marginBottom","form","FormFieldWrapper","TextField","label","type","required","hintText","Link","href","buildForgottenPasswordURL","data-cta-type","onChange","changeEvent","target","value","errorMessage","hasError","length","minLength","Checkbox","checked","handleShowPasswordChange","FormActions","submitButtonType","onSubmit","handleSubmitOfChangePassword","resetPassword","then","res","ok","json","catch","err","component","status","cancelLabel","submitLabel","InMemory","name","birthDateString","deathDateString","getLifeDatesString","birthDate","addHours","parseISO","deathDate","birthValid","isValidDate","deathValid","formatInTimeZone","Text","textSize","placeHolder","DashedBorder","OnlyYou","DateFieldWrapper","styled","midDayDateFromISODateString","isoDateString","getDatesFromState","birthDatePartial","newState","birthYear","birthMonth","birthDay","deathDatePartial","deathYear","deathMonth","deathDay","prefixSingleWithZero","setHours","inMemoryStateDateToIsoDates","birthISOString","toISOString","split","deathISOString","EditableInMemoryForm","page","handleEditData","canEdit","dateOfBirthDeceased","dateOfDeathDeceased","activityInMemory","showDate","setShowDate","nameCharCount","setNameCharCount","calcLength","dateState","setDateState","getDate","toString","getMonth","getFullYear","defaultValues","isValid","undefined","register","trigger","setValue","setError","formState","errors","getValues","useForm","formProps","mode","reValidateMode","criteriaMode","shouldFocusError","resolver","zodResolver","fundraisingPageActivityInMemoryValidation","resetOptions","keepDirtyValues","keepErrors","doSubmit","isNameValid","pageData","message","error","handleDateChanged","input","e","Editable","fieldName","editNode","noValidate","aria-label","handleNameChange","onBlur","handleNameBlur","shouldFocus","maxLength","ACTIVITY_IN_MEMORY_MAX_LENGTH","textAlign","marginTop","handleShowDatesChange","ResponsiveRow","DateField","dayName","monthName","yearName","day","month","year","handleBirthDateBlur","onFocus","handleBirthDateFocus","handleDeathDateBlur","handleDeathDateFocus","root","ErrorText","viewNode","handleSubmit","tooltip","FeedItemShared","feedId","pageId","pageUrl","isStravaMetric","fitbitDailyTargetSteps","sharedFeedItemData","showModal","setShowModal","router","useRouter","feed","slug","restOfQuery","query","feedString","queryAsString","url","fwsUrlFeedItem","feedItemId","data","mutate","useSwrGet","fallbackData","opts","useEffect","Modal","closeFunction","handleClose","push","pathname","asPath","showCloseButton","modalName","padding","FeedItem","feedItem","handleDelete","handleEdit","mutateOnEdit","updatedItem","FundraisingPageActivityDateForm","dynamic","FundraisingPageActivityNameForm","ActivityItems","theme","breakpoint","desktop","TextResponsive","FundraisingPageActivityBlock","updateAndMutatePage","fwsUrlPageParentMemberships","uniqueId","currentPage","itemsPerPage","memberships","results","activityDateTimeString","activityDateTime","Date","activityDateTimeEndString","activityDateTimeEnd","fullDateRangeString","activityString","activityName","event","eventName","backgroundColor","paddingTop","ActivityItemWrapper","startDate","endDate","PageMemberOf","ActivityItem","ActivityIconWrapper","IconFa","faIcon","faBullhorn","size","faCalendarDays","FundraisingPageProgress","FundraisingPageAdmin","mutatePage","shouldShowPageConnections","fitbitAllowed","facebookFundraiserAllowed","stravaAllowed","FundraisingPageConnections","ImageWrapper","spacing","s","img","AvatarSpacing","Avatar","restriction","brandName","useBrandContext","isSu2c","restrictionObject","restrictionCode","noneRestrictedPage","description","hidden","title","image","noneRestrictedImg","width","height","restrictionImageUrl","imagePathFromImageType","restrictionImageSrc","isBowelBabe","restrictionFrameSu2c","TextWrapper","Row","ColumnSpaceAround","textColor","Heading","h2","paddingBottom","RestrictionImage","alt","loading","src","PartyPopper","xl","trackEventGtm","setModalState","useModalContext","message_header","messageHeader","message_body","messageBody","signature","finaliseRegistration","setFinaliseRegistration","isRegistering","setIsRegistering","hasRegFailed","setHasRegFailed","isDismissing","setIsDismissing","isAMLegacy","message_signature","header","defaultHeader","body","defaultBody","loggedInStatus","loggedInAsNonRegisteredUser","showLoginLink","dismissModal","useCallback","shallow","registration","fetcher","FWS_BASE_URL","method","JSON","stringify","codeChallenge","challenge","clientId","process","OAUTH_CLIENT_ID","oneTimeLogin","OAUTH_BASE_URL","urlPath","credentials","getTokenFromAuthCode","authCode","loggedInFundraiser","getLoggedInFundraiser","password","MessageWrapper","modalPartyPopper","Collapse","headerTitleText","id","RowCenter","Button","onClick","logIn","appearance","StravaTracker","StravaTrackerForm","StravaSection","strava","FitbitTrackerForm","FitbitSection","fitbit","FitbitTracker","EditableTargetForm","FundraisingPageTotaliser","percentageOfTarget","calculatePercentRounded","donationsTotalAmount","formatMoneyWithCommas","totaliserProps","isCompact","summaryMessage","Totaliser","total","giftAid","donationsGiftAidTotalAmount","CollapseButton","colors","secondary","$open","transitionDurationSeconds","primary","xxs","$openStatus","$contentHeight","$widenContentBy","children","ariaLabel","widenContentBy","allCollapseState","setAllCollapseState","collapseIndex","customHeader","contentHeight","setContentHeight","content","useRef","toggleCollapse","current","scrollHeight","map","collapseState","mapIndex","newCollapseState","margin","marginVertical","aria-controls","aria-expanded","aria-description","ColumnAlignCenter","Flipper","faChevronDown","CollapseContent","ref","aria-hidden","CarouselOuter","m","mobile","ul","$smoothScrolling","xs","BadgeWrapper","li","$isFirst","IMAGE_WIDTH","$isLast","CARD_WIDTH","RoundedImageWrapper","tokenColors","grey_600","$isCurrent","impactStatement25","impactStatement50","impactStatement100","impactStatement150","impactStatement200","impactStatement300","impactStatement500","impactStatement1000","impactStatement2500","impactStatement5000","TotaliserImpactCarousel","scrollRef","targetOrTotalValue","Math","max","filteredImpactStatements","filterStatements","filteredByValue","statements","filter","statement","impactStatements","scrollToPosition","scrollElement","currentItem","getCurrentItem","index","findIndex","item","element","scrollX","offsetLeft","clientWidth","scrollTo","top","left","behavior","CarouselScrollArea","aria-live","aria-roledescription","tabIndex","milestone","CarouselCard","CollapseCentered","Badge","numberWithCommas","CarouselFade","FeedListFilter","FundraisingPageLatestUpdates","feedInView","firstName","displayNameOrUserName","owner","displayName","feedItemTotals","setFeedItemTotals","feeditems","donationsCount","postsCount","milestonesCount","count","donations","posts","activitys","milestones","newTotals","canCreate","pageStatus","Border","NextLink","cta","full","as","TotalsSection","donationsTotalAmountFake","donationsTotalAmountFacebook","FundraisingPageClosedInfo","userName","fundraiserId","fwsUrlFundraiserGetFirstOpenFundraisingPage","firstPage","replace","DisabledTextBorder","grey_200","avatarUrl","editButtonColor","fullWidth","initialValue","textRef","validationMessage","setValidationMessage","charCount","setCharCount","validationMessageString","validateDisplayName","forename","surname","defaultValue","handleChange","DISPLAY_NAME_MAX_LENGTH","LabelWrapper","UserBlock","editButtonPosition","ReactPlayer","ssr","ResponsiveReactPlayer","FundraisingPageVideo","setOptimizelyUserAttributes","useOptimizelyContext","hasPlayed","setHasPlayed","innerRef","inView","useInView","triggerOnce","handlePlay","video_played","actualHasPlayed","videoUrl","EditableVideoUrlForm","onPlay","config","youtube","playerVars","origin","QrCodeWrapper","QR_CODE_WIDTH","RowReverse","QrModal","qrCodeImageDataUrl","setQrCodeImageDataUrl","qrCodeImageDownloadDataUrl","setQrCodeImageDownloadDataUrl","trackEventOptimizely","isBrowser","linkUrl","window","location","QRCode","imageUrl","QR_CODE_DOWNLOAD_WIDTH","marginRight","faQrcode","ol","eventKey","faPrint","a","download","style","textDecoration","faDownload","ActionButtonWrapper","backgroundLight","grey_300","shadows","l","LEFT_COLUMN_WIDTH","ColumnWrapper","FundraisingPageSettings","FundraisingPageModalsManager","FitbitConnectionError","FacebookConnectionError","ToastMessages","FundraisingPage","slugString","modalState","feedRef","rootMargin","galleryRef","galleryInView","fwsUrlFundraisingPageSlug","pageFundraiser","partialData","refresh","updatePage","updatedPageData","useMetric","fitbitTargetSteps","targetSteps","fitbitDuration","round","getTime","fitbitValid","fitbitUser","valid","isFacebookUserValid","facebookUser","isFacebookFundraiserValid","facebookFundraiser","userNameForPage","firstNameForPage","profileImage","entityType","fundraisingPageType","brand","pageCloseDate","closeDate","isPageClosed","isToday","isPast","hasLogginInPageData","sendGTMTrackingEvent","pagePath","pageTitle","ErrorPageWrapper","ContentMaxWidth","ActivityManagementJourney","RowStretch","Share","isOwner","popoverPosition","ctaLocation","faShareAlt","AvatarResponsiveWrapper","EditableDisplayNameForm","HeaderGroup","PageTitle","PageHeaderImage","TotaliserButtonsFlex","RowAlignCenter","handleShowQrClick","DesktopRight","DividerLight","PageSubtitle","PageStory","Gallery","RestrictionSection","DesktopLeft","Loader","paddingHorizontal","paddingVertical","ActionButtonFlex","themeName","setBrandName","shareData","getShareContentFromEntity","Head","meta","property","Page","getInitialProps","getThemeName","cache","getCache","cachedData","get","pageFetcher","feedItemUrl","secondsToDurationString","duration","Number","seconds","h","floor","join","trim","now","date","today","tomorrow","setDate","d","isNaN","startDateString","endDateString","durationFromDates","dateString","currYear","currMonth","currDate"],"sourceRoot":"","ignoreList":[]}